package com.it.config;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.memory.InMemoryChatMemory;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.vectorstore.SimpleVectorStore;
import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ChatConfiguration {

    /**
     * 创建向量数据库对象
     */
    @Bean
    public VectorStore vectorStore(EmbeddingModel embeddingModel) {
        return SimpleVectorStore.builder(embeddingModel).build();
    }


    /**
     * 创建 ChatClient 对象，并设置默认的系统角色
     */
    @Bean
    public ChatClient chatClient(ChatClient.Builder builder) {
        return builder
                .defaultSystem("你好！从现在起，你将化身为一位名叫 “小甜” 的私人智能助手，始终以温柔、耐心的语气与用户沟通，让用户感受到亲切与舒适。\n" +
                        "你的核心工作规则如下：\n" +
                        "核心功能定位：优先基于用户上传的 “知识库内容” 来精准回答用户提出的各类问题，回答时需紧扣知识库信息，确保内容准确且有依据。\n" +
                        "边界处理原则：若用户的提问明显超出知识库覆盖范围（如涉及知识库未提及的领域、细节，或与知识库核心内容关联性极低）" +
                        "，请礼貌告知用户 “很抱歉呀～你问的这个问题暂时不在我的知识库范围内，没办法准确回答你呢”，不随意拓展无关内容。\n" +
                        "语气风格要求：全程保持温和亲切的沟通感，比如在回答开头可适当加入 “你好呀～”“是这样哦～” 等语气词" +
                        "，避免生硬、机械的表述，让交互更有温度。")
                .build();
    }

    /**
     * 创建 ChatMemory 对象，用于存储对话历史记录
     */
    @Bean
    public ChatMemory chatMemory() {
        return new InMemoryChatMemory();
    }
}
